<?php
namespace app\index\controller;

use think\Controller;

class BaseController extends Controller
{

    /**
     * 计算两个经纬度之间的距离
     *
    **/
    public function get_distance($lat1, $lng1, $lat2, $lng2){
        // 将角度转为狐度
        $radLat1 = deg2rad($lat1); //deg2rad()函数将角度转换为弧度
        $radLat2 = deg2rad($lat2);
        $radLng1 = deg2rad($lng1);
        $radLng2 = deg2rad($lng2);
        $a = $radLat1 - $radLat2;
        $b = $radLng1 - $radLng2;
        $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137 * 1000;
        //将米转化为公里
        $s = $s/1000;
        return $s;
    }

    // *@param lng float 经度
    //  *@param lat float 纬度
    //  *@param distance float 该点所在圆的半径，该圆与此正方形内切，默认值为单位米
    //  *@return array 正方形的四个点的经纬度坐标
    public function returnSquarePoint($lng, $lat,$distance)
    {
        $PI = 3.14159265;
        $longitude = $lng;
        $latitude = $lat;

        $degree = (24901*1609)/360.0;
        $raidusMile = $distance;

        $dpmLat = 1/$degree;
        $radiusLat = $dpmLat*$raidusMile;
        $minLat = $latitude - $radiusLat;       //拿到最小纬度
        $maxLat = $latitude + $radiusLat;       //拿到最大纬度

        $mpdLng = $degree*cos($latitude * ($PI/180));
        $dpmLng = 1 / $mpdLng;
        $radiusLng = $dpmLng*$raidusMile;
        $minLng = $longitude - $radiusLng;     //拿到最小经度
        $maxLng = $longitude + $radiusLng;     //拿到最大经度
        $range = array(
            'minLat' => $minLat,
            'maxLat' => $maxLat,
            'minLon' => $minLng,
            'maxLon' => $maxLng
        );
        return $range;
    }

}
